import matplotlib.pyplot as plt
import numpy as np
import pandas  as pd
import matplotlib as mpl
mpl.use('TkAgg')  # 出图设置
plt.rcParams['font.sans-serif'] = 'SimSun'#宋体设置
plt.rcParams['axes.unicode_minus'] = False   # 字符显示


# # 简单实例
# import random
# x1 = [random.randint(1, 1000) for i in range(100)]
# y1 = [random.randint(1, 1000) for i in range(100)]
# x2 = [random.randint(1, 1000) for i in range(100)]
# y2 = [random.randint(1, 1000) for i in range(100)]
#
# colors1 = '#00CED1'  # 点的颜色 RGB颜色表
# colors2 = '#DC143C'
# area = 3.14 * 4 ** 2  # 点面积
# # 画散点图
#
# plt.xlabel('X')
# plt.ylabel('Y')
# plt.scatter(x1, y1, s=area, c=colors1, alpha=0.4, label='类别A')
# plt.scatter(x2, y2, s=area, c=colors2, alpha=0.4, label='类别B')
#
# plt.legend()
#
# plt.show()



# plt.rcParams['font.sans-serif']=['simhei']  #标题字体
# plt.title('scatter测试图')     #图片标题
# np.random.seed(1)   #使用每次生成的随即数都相同
#
# x = np.random.rand(5)
# y = np.random.rand(5)
#
#
# area = 20*10
#
# plt.scatter(x, y, s=area,c='b',marker='o')
# plt.show()



# data = pd.read_csv(r'./housing.csv')
# fig,ax = plt.subplots(figsize=(9,6)) #  创建画布和画图区域
# ax.scatter(x='longitude',y='latitude',data=data)  # x是经度 , y 是维度  data表示依据哪个数据集
# data.head()
# plt.show()
#
# fig,ax = plt.subplots(figsize=(9,6))
# # alpha取值在0-1之间，具体取何值取决于对密集程度的定义，这里取0.3
# ax.scatter(x='longitude',y='latitude',data=data,alpha=0.3)
# plt.show()
#
# fig,ax = plt.subplots(1,2,figsize=(20,6))
# ax[0].scatter(x='longitude',y='latitude',data=data,alpha=0.3)
# ax[0].set_title('设置前',size=16)
# ax[1].scatter(x='longitude',y='latitude',data=data,alpha=0.3,s=data['population']/100,label='population')
# # s表示的是size ,就是大小的意思 但只能写  s
# ax[1].set_title('设置后',size=16)
# plt.show()
#
# fig,ax = plt.subplots(figsize=(9,6))
# ax_plot = ax.scatter(x='longitude',y='latitude',alpha=0.4,s=data['population']/100,
#                      c='median_house_value',cmap=plt.get_cmap('jet'),data=data)
# # median_house_value 表示data数据中的房价
# plt.show()
#
# # 加上颜色棒
# # 参数mappable理解起来就是我们需要提供一个可以映射颜色的对象ax_plot，这个对象就是我们作的图
# # 参数ax用来指示colorbar()获取到的渐变色条在哪里显示，如果我们设置ax=ax[0]那它就在ax[0]的区域显示，这里就是 ax 所以 ax = ax
# fig.colorbar(ax_plot,ax=ax)
# plt.show()



# #案例
# # 设置绘图风格
# plt.style.use('seaborn')
# # 设置中文编码和负号的正常显示
# plt.rcParams['font.sans-serif'] = 'Microsoft YaHei'
# plt.rcParams['axes.unicode_minus'] = False
#
# cars = pd.read_csv('./data_former/cars.csv')  # 查看一下cars
# # 绘图
# plt.scatter(cars.speed, # x轴数据为汽车速度
#             cars.dist, # y轴数据为汽车的刹车距离
#             s = 30, # 设置点的大小
#             c = 'blue', # 设置点的颜色
#             marker = 's', # 设置点的形状
#             alpha = 0.9, # 设置点的透明度
#             linewidths = 0.3, # 设置散点边界的粗细
#             edgecolors = 'red' # 设置散点边界的颜色
#             )
#
# plt.title('汽车速度与刹车距离的关系')
# plt.xlabel('汽车速度')
# plt.ylabel('刹车距离')
#
#
# # 显示图形plt.show()
# plt.show()


# # 案例三(分组绘制)
# # 读取数据
# iris = pd.read_csv('./iris.csv')
#
# # 自定义颜色
# colors = ['steelblue', '#9999ff', '#ff9999']
#
# # 三种不同的花品种S
# species = iris['species'].unique()
# print(species)
# # 通过循环的方式，完成分组散点图的绘制
# for i in range(len(species)):
#     plt.scatter(
#         iris[iris['species'] == species[i]]['petal_length'],  # 花瓣长度
#         iris[iris['species'] == species[i]]['petal_width'],  # 花瓣宽度
#
#         s=35, c=colors[i], label=species[i])
#
# # 添加轴标签和标题
# plt.title('花瓣长度与宽度的关系')
# plt.xlabel('花瓣长度')
# plt.ylabel('花瓣宽度')
#
# # 添加图例
# plt.legend()
# # 显示图形
# plt.show()